<?php

class Cidade {
    private $idCidade;
    private $idUF;
    private $nome;
    public function getIdCidade() {
        return $this->idCidade;
    }

    public function setIdCidade($idCidade) {
        $this->idCidade = $idCidade;
    }

    public function getIdUF() {
        return $this->idUF;
    }

    public function setIdUF($idUF) {
        $this->idUF = $idUF;
    }

    public function getNome() {
        return $this->nome;
    }

    public function setNome($nome) {
        $this->nome = $nome;
    }

        
    /**
     * Retorna uma cidade conforme o id passado
     * @param int idCidade
     * @return Cidade 
     */
    public static function consultar($nome){
        $cidade = null;
        $conn = Connection::getConnection();
        
        $rs = $conn->query("SELECT * FROM cidade WHERE nome ='$nome'");
        $linha = $rs->fetch_assoc();
        
        //se foi encontrado o registro
        if($linha){
           $cidade = self::arrayParaCidade($linha);
        }
        return $cidade;
    }
    /**
     * Retorna uma cidade conforme o id passado
     * @param int idCidade
     * @return Cidade 
     */
    public static function consultarPorID($id){
        $cidade = null;
        $conn = Connection::getConnection();
        
        $sql = "SELECT * FROM cidade WHERE idCidade = $id";
       
        $rs = $conn->query($sql);
        
        $linha = $rs->fetch_assoc();
        //se foi encontrado o registro
        if($linha){
           $cidade = self::arrayParaCidade($linha);
        }
        return $cidade;
    }

    /**
     * Tranforma a linha de uma consulta na tabela cidade em um objeto cidade
     * @param type $linha linha de uma consulta a tabela cidade
     */
    public static function arrayParaCidade($linha){
        $cidade = new Cidade();
        $cidade->idCidade = isset($linha["idCidade"]) ? $linha["idCidade"] : null;
        $cidade->idUF = isset($linha["idUf"]) ? $linha["idUf"] : null;
        $cidade->nome = isset($linha["nome"]) ? $linha["nome"] : null;
        return $cidade;
    }
    /**
     * Retorna uma lista de cidades
     * @param int $uf filtra por estado a listagem
     * @return Cidade[] cidades
     */

    public static function listar($uf){
        $cidades = array();
        $conn = Connection::getConnection();
        
        $rs = $conn->query("SELECT c.* FROM cidade c, UF e WHERE c.idUF = e.idUF AND e.sigla like '$uf'");
        
        while($linha = $rs->fetch_assoc()){
            $cidades[] = self::arrayParaCidade($linha);
        }
        return $cidades;
    }

}

?>
